题目地址 (opens new window)

  • 🙂 第一次练习 2020年3月26日 有一点思路,但是编码还是挺困难的,主要的是思路,官方题解思路更好,这里可以直接先看,在看中学习。学习期代码技巧
  • 💩 第二次练习

# 利用两个数组模拟方向

解题代码

class Solution {
    public int numRookCaptures(char[][] board) {
        int cnt = 0, st = 0, ed = 0;
        int[] dx = {0, 1, 0, -1};
        int[] dy = {1, 0, -1, 0};

        for (int i = 0; i < 8; ++ i) {
            for (int j = 0; j < 8; ++ j) {
                if ('R' == board[i][j]) {
                    st = i;
                    ed = j;
                    break;
                }
            }
        }

        for (int i = 0; i < 4;  ++ i) {
            for (int step = 0; ;  ++ step) {
                int tx = st + step * dx[i];
                int ty = ed + step * dy[i];
                if (tx < 0 || tx >= 8 || ty < 0 || ty >=8 || 'B' == board[tx][ty]) {
                    break;
                }

                if ('p' == board[tx][ty]) {
                    cnt ++;
                    break;
                }
            }
        }
        return cnt;
    }
}

# 易错点

  • 需要进行的是 字符比较,而不是字符串比较 不能使用 equals 方法

  • 代码技巧 使用两个数组来模拟方向

    int[] dx = {0, 1, 0, -1};
    int[] dy = {1, 0, -1, 0};
    
最后编辑时间: 7/14/2020, 9:21:47 AM